﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ZackFlame.SimpleBrainFuck.Core
{
    /// <summary>
    /// Исключение, выбрасываемое при нахождении ошибки в исходном коде
    /// SimpleBrainFuck программы.
    /// </summary>
    public class CodeErrorException : Exception
    {
        /// <summary>
        /// Номер строки кода, в которой найдена ошибка.
        /// </summary>
        public int Line { get; set; }

        /// <summary>
        /// Инициализирует новый экземпляр CodeErrorException с заданным номером
        /// строки и текстом ошибки.
        /// </summary>
        /// <param name="line">Номер строки кода, в которой найдена ошибка.</param>
        /// <param name="message">Сообщение, поясняющее ошибку.</param>
        public CodeErrorException(int line, string message)
            : base(message)
        {
            Line = line;
        }

        /// <summary>
        /// Преобразует исключение в строку, содержащую информацию о номере строки
        /// с ошибкой и текст, поясняющий ошибку.
        /// </summary>
        /// <returns></returns>
        public override string ToString()
        {
            return string.Format("Line {0}: {1}", Line, Message);
        }
    }
}
